/**
 * 
 */
package br.com.fiapbank.mb.caixa;

import javax.annotation.PostConstruct;

import br.com.fiapbank.dominio.Conta;
import br.com.fiapbank.mb.BaseMB;
import br.com.fiapbank.negocio.NegocioException;
import br.com.fiapbank.negocio.caixa.CaixaNegocioFiapBank;
import br.com.fiapbank.negocio.caixa.CaixaNegocio;

/**
 * @author robson
 *
 */
public class CaixaMB extends BaseMB {

	
	
	// TODO: google guice
	private CaixaNegocio caixa;
	
	
	/**
	 * conta que sera realizada o saque / deposito ... 
	 */
	private Conta conta;
	
	
	/**
	 * valor do deposito/saque 
	 */
	private Double valor;
	
	
	/**
	 * quantidade talao/cartao
	 */
	private Integer quantidade;
	
	
	
	@PostConstruct
	public void init(){
		conta = new Conta();
		caixa = new CaixaNegocioFiapBank();
	}
	
	
	public void sacar(){
		try {
			caixa.sacar(conta, valor, conta.getSenha());
			setMsg("Saque realizado com sucesso");
		} catch (NegocioException e) {
			setMsg(e.getMessage());
		}
		clear();
	}
	
	
	public void depositar(){
		try {
			caixa.depositar(conta, valor,conta.getSenha());
			setMsg("Deposito realizado com sucesso");
		} catch (NegocioException e){
			setMsg(e.getMessage());
		}
		clear();		
	}
	
	
	public void retirarTalao(){
		try {
			caixa.retirarTalao(conta, quantidade,conta.getSenha());
			setMsg("Retirada Autorizada");
		} catch (NegocioException e){
			setMsg(e.getMessage());
		}
		clear();
	}
	
	
	public void retirarCartao(){
		try {
			caixa.retirarCartao(conta, quantidade,conta.getSenha());
			setMsg("Retirada Autorizada");
		} catch (NegocioException e){
			setMsg(e.getMessage());
		}
		clear();
	}


	public void clear(){
		conta = new Conta();
		valor = null;
		quantidade = null;
	}
	
	public void clearMsg(){
		setMsg("");
	}
	
	
	// GETS e SETS do MB 	
	
	public Conta getConta() {
		return conta;
	}


	public void setConta(Conta conta) {
		this.conta = conta;
	}

	public Double getValor() {
		return valor;
	}


	public void setValor(Double valor) {
		this.valor = valor;
	}


	public Integer getQuantidade() {
		return quantidade;
	}


	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
}
